HBASE-30354 Add JDK 21 nightly checks - #8601
Conversation
There was a problem hiding this comment.
🟢 Approval recommended
The new stage consistently mirrors JDK 17, and the pinned JDK 21 asset and checksum are valid.
Pull request overview
Adds Java 21 coverage to HBase’s nightly Hadoop 3 CI matrix.
Changes:
- Installs pinned Temurin JDK 21 in the CI image.
- Adds JDK 21 nightly execution, reporting, and result aggregation.
File summaries
| File | Description |
|---|---|
dev-support/Jenkinsfile |
Adds the JDK 21 nightly stage and reporting. |
dev-support/docker/Dockerfile |
Downloads, verifies, and installs Temurin 21. |
Review details
- Files reviewed: 2/2 changed files
- Comments generated: 0
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Overall LGTM. You'd better create a branch on the asf repo, and create modify the jenkins job to include this branch to test the new jenkinsfile. Thanks. |
|
Thanks, let me try that. |
|
This one's a real failure: I'll address that in a separate issue. |
|
Opened this PR to remove unnecessary reflection incompatible with Java 21. Please take a look: |
98519d8 to
840cb1e
Compare
Merged and rebased. I'll test the nightly build again. |
|
Nightly for both JDK17 and JDK21 failed with two seemingly unrelated errors: This also fails locally: mvn -pl hbase-mapreduce test \
-Dtest='TestCopyTable#testLoadingSnapshotAndBulkLoadToMobTable+tsetLoadingSnapshotToMobTable' \
-DfailIfNoTests=true |
|
Noticed the test has been broken since HBASE-30336. Filed a new issue and PR to fix it: |
Nightly runs jdk8-hadoop2, jdk8-hadoop3, jdk11-hadoop3 and jdk17-hadoop3. Nothing exercises Java 21, so the work under HBASE-29546 has no CI signal and the support matrix cannot move past JDK 17. - Add Temurin 21.0.12.1+1 to the CI image, pinned by URL and sha256, linked at /usr/lib/jvm/java-21 alongside the existing 8, 11 and 17 - Clone the jdk17 hadoop3 stage as jdk21 hadoop3, with its stash, cleanup, unstash, comment entry and HTML report Nightly only for now. Precommit can follow once the axis has been green.
840cb1e to
0dea1ee
Compare
|
With HBASE-30358 and HBASE-30365, the JDK21 build finally succeeded:
Note The run as a whole is UNSTABLE, but that comes from the JDK17 stage failing |
|
@Apache9 Do you think this is ready to merge, or is there anything else you want to confirm? I'd like to move this Java 21 work forward. I noticed our Java compatibility matrix is quite outdated: HBase 3.0 is not listed, and there is also no JDK 21 column, not to mention JDK 25. FWIW, we've been running HBase 2.4+ on Java 21 in production for years, mainly for generational ZGC, and I know we're not the only ones. Once merged, I'd like to backport this to branch-3* and branch-2*, then I'd like to propose updating the support matrix. I'm not sure if we can mark 2.5, 2.6 and 3.0 as JDK 21 ready (maybe |
|
We will active this for all branches? Include branch-2.x? |
|
I was thinking of starting with branch-2 for the upcoming 2.7 line, then maybe backport to branch-2.6 so we can update the compatibility matrix to include JDK 21 for 2.6.x (with a footnote pointing to the exact version). Not planning to go further back to branch-2.5, but open to it if there's interest. Is there a CI capacity/cost concern with adding another nightly axis to these branches? |
|
Just want to confirm. We have moved pre commit to github actions so generally the workloads on jenkins are fine. |
|
Thanks for the approval! I'll continue with the backporting work. Oh, https://ci-hbase.apache.org/ is down. |
|
I asked in the #asfinfra channel and https://ci-hbase.apache.org/ should have restarted |
- Add Temurin 21.0.12.1+1 to the CI image, pinned by URL and sha256, linked at /usr/lib/jvm/java-21 alongside the existing 8, 11 and 17 - Clone the jdk17 hadoop3 stage as jdk21 hadoop3, with its stash, cleanup, unstash, comment entry and HTML report Signed-off-by: Duo Zhang <zhangduo@apache.org>
- Add Temurin 21.0.12.1+1 to the CI image, pinned by URL and sha256, linked at /usr/lib/jvm/java-21 alongside the existing 8, 11 and 17 - Clone the jdk17 hadoop3 stage as jdk21 hadoop3, with its stash, cleanup, unstash, comment entry and HTML report Signed-off-by: Duo Zhang <zhangduo@apache.org>
- Add Temurin 21.0.12.1+1 to the CI image, pinned by URL and sha256, linked at /usr/lib/jvm/java-21 alongside the existing 8, 11 and 17 - Clone the jdk17 hadoop3 stage as jdk21 hadoop3, with its stash, cleanup, unstash, comment entry and HTML report Signed-off-by: Duo Zhang <zhangduo@apache.org>
- Add Temurin 21.0.12.1+1 to the CI image, pinned by URL and sha256, linked at /usr/lib/jvm/java-21 alongside the existing 8, 11 and 17 - Clone the jdk17 hadoop3 stage as jdk21 hadoop3, with its stash, cleanup, unstash, comment entry and HTML report Signed-off-by: Duo Zhang <zhangduo@apache.org>
Jira: HBASE-30354
Nightly runs jdk8-hadoop2, jdk8-hadoop3, jdk11-hadoop3 and jdk17-hadoop3. Nothing exercises Java 21, so the work under HBASE-29546 has no CI signal and the support matrix cannot move past JDK 17.
Nightly only for now. Precommit can follow once the axis has been green.
Worth noting for reviewers: precommit does not run the nightly pipeline, so green checks here say nothing about whether the new stage works. The first real test is the next nightly run on master after this merges.
What I could verify is that it parses against the plugin versions our own Jenkins runs, using the declarative linter it exposes:
curl -X POST -F "jenkinsfile=<dev-support/Jenkinsfile" \ https://ci-hbase.apache.org/pipeline-model-converter/validateJenkinsfile successfully validated.for this patch. That is syntax only though.